package logica;

import java.util.ArrayList;

import persistencia.FabricaPersistenciaAgencia;
import persistencia.IPersistenciaTerminal;
import persistencia.IPersistenciaUsuario;
import entidades.Terminal;
import entidades.Usuario;

public class LogicaUsuario implements ILogicaUsuario{

	private static LogicaUsuario instance =null; //variable para crear la instancia de la logica venta agencia
	
	private LogicaUsuario(){
		
	}
	
	public static LogicaUsuario getInstance(){
		
		if(instance == null){ //verifica si existe una instancia de la logica, sino devuelve la creada anteriormente
			instance = new LogicaUsuario();			
		}else{instance = new LogicaUsuario();}
		return instance;
	}
	
	@Override
	public Usuario Login(String login,String password){
		Usuario retorno=null;
		try{
			IPersistenciaUsuario i = FabricaPersistenciaAgencia.getPersistenciaUsuario();
			retorno = i.Login(login, password);			
		}catch (Exception e){
			e.printStackTrace();
		}
		return retorno;

	}
	@Override
	public ArrayList<Usuario> getUsuarios() {
		ArrayList<Usuario> retorno= new ArrayList<Usuario>();
		try{
			IPersistenciaUsuario i = FabricaPersistenciaAgencia.getPersistenciaUsuario();
			retorno = i.getUsuarios();			
		}catch (Exception e){
			e.printStackTrace();
		}
		return retorno;
	}

	@Override
	public String altaUsuario(Usuario unUsuario) {
		String retorno="Error en alta de Usuario";
		try{
			IPersistenciaUsuario i = FabricaPersistenciaAgencia.getPersistenciaUsuario();
			retorno = i.altaUsuario(unUsuario);			
		}catch (Exception e){
			e.printStackTrace();
		}
		return retorno;
	}

	@Override
	public String bajaUsuario(Usuario unUsuario) {
		String retorno="Error en la baja de Usuario";
		try{
			IPersistenciaUsuario i = FabricaPersistenciaAgencia.getPersistenciaUsuario();
			retorno = i.bajaUsuario(unUsuario);			
		}catch (Exception e){
			e.printStackTrace();
		}
		return retorno;
	}
	
	@Override
	public String altaUsuarioTerminal(Usuario unUsuario,Terminal unaTerminal) {
		String retorno="Error en la baja de Usuario";
		try{
			IPersistenciaUsuario i = FabricaPersistenciaAgencia.getPersistenciaUsuario();
			retorno = i.altaUsuarioTerminal(unUsuario,unaTerminal);			
		}catch (Exception e){
			e.printStackTrace();
		}
		return retorno;
	}
	
	@Override
	public String bajaUsuarioTerminal(Usuario unUsuario,Terminal unaTerminal) {
		String retorno="Error en la baja de Usuario";
		try{
			IPersistenciaUsuario i = FabricaPersistenciaAgencia.getPersistenciaUsuario();
			retorno = i.bajaUsuarioTerminal(unUsuario,unaTerminal);			
		}catch (Exception e){
			e.printStackTrace();
		}
		return retorno;
	}
	
	@Override
	public ArrayList<Terminal> terminalesQueTiene(Usuario unUsuario) {
		ArrayList<Terminal> retorno= new ArrayList<Terminal>();
		try{
			IPersistenciaUsuario i = FabricaPersistenciaAgencia.getPersistenciaUsuario();
			retorno = i.terminalesQueTiene(unUsuario);			
		}catch (Exception e){
			e.printStackTrace();
		}
		return retorno;
	}
	
	@Override
	public ArrayList<Terminal> terminalesQueNoTiene(Usuario unUsuario){
		ArrayList<Terminal> retorno= new ArrayList<Terminal>();
		try{
			IPersistenciaUsuario i = FabricaPersistenciaAgencia.getPersistenciaUsuario();
			retorno = i.terminalesQueNoTiene(unUsuario);			
		}catch (Exception e){
			e.printStackTrace();
		}
		return retorno;
		
	}
}
